package com.codebattery.service;

import com.codebattery.mapper.BaseMapper;

import java.io.Serializable;
import java.util.List;


public abstract class MyBatisBaseServiceImpl<T, I extends Serializable> implements MyBatisBaseService<T, I> {

    /**
     * 子类要提供baseMapper对象
     *
     */
    protected abstract BaseMapper<T, I> mapper();

    @Override
    public int deleteByPrimaryKey(I id) {
        return mapper().deleteByPrimaryKey(id);
    }

    @Override
    public int insert(T record) {
        return mapper().insert(record);
    }

    @Override
    public T selectByPrimaryKey(I id) {
        return mapper().selectByPrimaryKey(id);
    }

//    @Override
//    public List<T> selectAll() {
//        return mapper().selectAll();
//    }

    @Override
    public int updateByPrimaryKey(T record) {
        return mapper().updateByPrimaryKey(record);
    }

    @Override
    public int insertOrUpdate(T record) {
        return 0;
    }

    //    @Override
//    public int deleteByColumn(String columnName, Object columnValue) {
//        return mapper().deleteByColumn(columnName, columnValue);
//    }

//    @Override
//    public T selectByColumn(String columnName, Object columnValue) {
//        return mapper().selectByColumn(columnName, columnValue);
//    }

//    @Override
//    public int insertBatch(List<T> records) {
//        return mapper().insertBatch(records);
//    }

//    @Override
//    public int deleteBatch(List<I> keys) {
//        return mapper().deleteBatch(keys);
//    }

//    @Override
//    public List<T> selectByPrimaryKeys(List<I> keys) {
//        return mapper().selectByPrimaryKeys(keys);
//    }

}